import { ListRawState } from "../../views/home";

interface CartState {
  cartList: CartListRawState[];
  // totalPrice: number;
  // totalCount: number;
  // allState: boolean;
}

interface CartListRawState extends ListRawState {
  count: number;
  state: boolean;
}


// 初始值
const initState: CartState = {
  // 购物车商品
  cartList: JSON.parse(localStorage.getItem('cartList')  || '[]')
  // // 总数量
  // totalCount: 0,
  // // 总价钱
  // totalPrice: 0,
  // // 全选状态
  // allState: false,
};

// 纯函数
const reducer = (state = initState, action: any) => {
  switch (action.type) {
    // 加入购物车  &  购物车数量  + 
    case "addCart": {
      // 1. 判断 cartList 是否该数据
      const item = state.cartList.find((item) => item.id === action.payload.id);
      if(item) {
        // 1-1 存在
        item.count++
      } else {
        // 1-2 不存在
        state.cartList.push(action.payload)
      }
      return {
        ...state,
        cartList: [...state.cartList]
      }
    }
      
    // 购物车数量  - 
    case "subCart": {
       // 1. 判断 cartList 是否该数据
       const item = state.cartList.find((item) => item.id === action.payload.id);
       if(item) {
         // 1-1 存在
         item.count--
       }

       return {
         ...state,
         cartList: [...state.cartList]
       }
    }

    case 'changeState': {
        // 1. 判断 cartList 是否该数据
        const item = state.cartList.find((item) => item.id === action.payload.id);
        if(item) {
          // 1-1 存在
          item.state = !item.state
        }

        return {
          ...state,
          cartList: [...state.cartList]
        }
    }

    default:
      return state;
  }
};

export default reducer;
